Page({
  data: {
    cartItems: [],
    isSelectAll: false,
    totalPrice: '0.00',
    selectedItemsCount: 0,
    isLoggedIn: false // 新增：购物车页面的登录状态
  },

  onShow: function () {
    this.checkLoginStatusAndLoadCart(); // 修改：先检查登录状态再加载购物车
  },

  checkLoginStatusAndLoadCart: function () {
    const token = wx.getStorageSync('token'); // 假设登录成功后会有一个token
    if (token) {
      this.setData({
        isLoggedIn: true
      }, () => {
        this.loadCartItems(); // 登录后才加载购物车数据
      });
    } else {
      this.setData({
        isLoggedIn: false,
        cartItems: [], // 未登录时清空购物车数据，避免显示旧数据
        totalPrice: '0.00',
        selectedItemsCount: 0,
        isSelectAll: false
      });
    }
  },

  loadCartItems: function () {
    const cart = wx.getStorageSync('cart') || [];
    // 确保每个商品都有 checked 属性，默认选中
    // 新增：为每个商品添加 showOverlay 属性，默认不显示覆盖层
    cart.forEach(item => {
      if (typeof item.checked === 'undefined') {
        item.checked = true;
      }
      item.showOverlay = false; // 默认不显示毛玻璃覆盖层
    });
    this.setData({
      cartItems: cart
    }, () => {
      this.updateCartSummary(); // 更新购物车总计
    });
  },

  // 新增：跳转到用户页面进行登录
  goToUserPage: function () {
    wx.navigateTo({ // 将 wx.switchTab 改为 wx.navigateTo
      url: '/pages/user/user',
      success: function() {
        console.log('跳转到用户页面成功');
      },
      fail: function(err) {
        console.error('跳转到用户页面失败', err); // 这里就不会再报那个错误了
      }
    });
  },

  // 长按商品项，显示毛玻璃覆盖层及按钮
  longPressItem: function (e) {
    const index = e.currentTarget.dataset.index;
    const { cartItems } = this.data;

    // 先隐藏所有其他商品的覆盖层，确保每次只有一个 item 处于编辑状态
    cartItems.forEach((item, i) => {
      if (i !== index) {
        item.showOverlay = false;
      }
    });

    // 切换当前长按商品的覆盖层显示状态
    // 如果当前已经是显示状态，则再次长按会隐藏
    cartItems[index].showOverlay = !cartItems[index].showOverlay;

    this.setData({
      cartItems: cartItems
    });
  },

  // 点击购物车列表中的非按钮区域时，隐藏所有覆盖层
  hideAllOverlays: function () {
    let shouldHide = false;
    const { cartItems } = this.data;
    cartItems.forEach(item => {
      if (item.showOverlay) {
        item.showOverlay = false;
        shouldHide = true;
      }
    });

    if (shouldHide) {
      this.setData({
        cartItems: cartItems
      });
    }
  },

  // 取消删除（点击取消按钮）
  cancelDelete: function (e) {
    const index = e.currentTarget.dataset.index;
    const { cartItems } = this.data;
    cartItems[index].showOverlay = false; // 隐藏当前商品的覆盖层
    this.setData({
      cartItems: cartItems
    });
  },

  // 选中/取消选中单个商品
  toggleSelectItem: function (e) {
    if (!this.data.isLoggedIn) { return; } // 未登录禁止操作
    const index = e.currentTarget.dataset.index;
    const { cartItems } = this.data;
    cartItems[index].checked = !cartItems[index].checked;
    this.setData({ cartItems }, () => {
      this.updateCartSummary();
      this.hideAllOverlays(); // 确保操作后隐藏覆盖层
    });
  },

  // 全选/取消全选
  toggleSelectAll: function (e) {
    if (!this.data.isLoggedIn) { return; } // 未登录禁止操作
    const { isSelectAll, cartItems } = this.data;
    const newSelectAll = !isSelectAll;
    cartItems.forEach(item => {
      item.checked = newSelectAll;
    });
    this.setData({
      cartItems: cartItems,
      isSelectAll: newSelectAll
    }, () => {
      this.updateCartSummary();
      this.hideAllOverlays(); // 确保操作后隐藏覆盖层
    });
  },

  // 减少购买数量
  minusQuantity: function (e) {
    if (!this.data.isLoggedIn) { return; }
    const index = e.currentTarget.dataset.index;
    const { cartItems } = this.data;
    if (cartItems[index].quantity > 1) {
      cartItems[index].quantity--;
      this.setData({ cartItems }, () => {
        this.updateCartSummary();
        this.hideAllOverlays(); // 确保操作后隐藏覆盖层
      });
    }
    this.hideAllOverlays();
  },

  // 增加购买数量
  addQuantity: function (e) {
    if (!this.data.isLoggedIn) { return; }
    const index = e.currentTarget.dataset.index;
    const { cartItems } = this.data;
    // 这里可以添加库存限制，但购物车通常不直接知道库存，会在结算时校验
    cartItems[index].quantity++;
    this.setData({ cartItems }, () => {
      this.updateCartSummary();
      this.hideAllOverlays(); // 确保操作后隐藏覆盖层
    });
    this.hideAllOverlays();
  },

  // 手动输入数量
  onQuantityInput: function (e) {
    if (!this.data.isLoggedIn) { return; }
    const index = e.currentTarget.dataset.index;
    let value = parseInt(e.detail.value) || 1;
    if (value < 1) value = 1;

    const { cartItems } = this.data;
    cartItems[index].quantity = value;
    this.setData({ cartItems }, () => {
      this.updateCartSummary();
      this.hideAllOverlays(); // 确保操作后隐藏覆盖层
    });
    this.hideAllOverlays();
  },

  // 删除商品
  deleteItem: function (e) {
    if (!this.data.isLoggedIn) { return; }
    const index = e.currentTarget.dataset.index;
    wx.showModal({
      title: '提示',
      content: '确定要删除该商品吗？',
      success: (res) => {
        if (res.confirm) {
          const { cartItems } = this.data;
          cartItems.splice(index, 1); // 从数组中移除商品
          this.setData({ cartItems }, () => {
            wx.setStorageSync('cart', cartItems); // 更新缓存
            this.updateCartSummary(); // 更新购物车总计
            this.hideAllOverlays(); // 隐藏所有覆盖层
            wx.showToast({
              title: '删除成功',
              icon: 'success',
              duration: 1000
            });
          });
        } else {
          // 如果点击取消，确保覆盖层收回
          this.cancelDelete(e); // 调用取消方法来隐藏当前 item 的覆盖层
        }
      }
    });
  },

  // 更新购物车总计和选中状态
  updateCartSummary: function () {
    const { cartItems } = this.data;
    let totalPrice = 0;
    let selectedItemsCount = 0;
    let allChecked = true;

    if (cartItems.length === 0) {
      allChecked = false; // 如果购物车为空，则全选状态为 false
    }

    cartItems.forEach(item => {
      if (item.checked) {
        totalPrice += parseFloat(item.price) * item.quantity;
        selectedItemsCount++;
      } else {
        allChecked = false; // 只要有一个未选中，全选就为 false
      }
    });

    this.setData({
      totalPrice: totalPrice.toFixed(2), // 保留两位小数
      selectedItemsCount: selectedItemsCount,
      isSelectAll: allChecked
    });
    wx.setStorageSync('cart', cartItems); // 实时更新购物车缓存
  },

  // 结算
  checkout: function () {
    if (!this.data.isLoggedIn) {
      wx.showToast({ title: '请先登录才能结算', icon: 'none' });
      return;
    }
    const { cartItems } = this.data;
    const selectedForCheckout = cartItems.filter(item => item.checked);

    if (selectedForCheckout.length === 0) {
      wx.showToast({
        title: '请选择要结算的商品',
        icon: 'none'
      });
      return;
    }

    // 将选中的商品存储到缓存，以便结算页获取
    wx.setStorageSync('orderItemsToCheckout', selectedForCheckout);

    this.hideAllOverlays(); // 确保结算前隐藏所有覆盖层
    wx.navigateTo({
      url: '/pages/shopping/checkout/checkout?from=cart'
    });
  },

  // 跳转到商品详情页
  goToDetail: function (e) {
    const id = e.currentTarget.dataset.id;
    this.hideAllOverlays(); // 确保跳转前隐藏所有覆盖层
    wx.navigateTo({
      url: `/pages/shopping/detail/detail?id=${id}`
    });
  },

  // 跳转到商品列表页
  goToListPage: function () {
    this.hideAllOverlays(); // 确保跳转前隐藏所有覆盖层
    wx.switchTab({
      url: '/pages/shopping/list/list'
    });
  },

  // 空方法，用于 catchtap 阻止事件冒泡，但不做任何事情
  doNothing: function() {
    // 阻止事件冒泡，避免点击覆盖层时触发 hideAllOverlays
  }
})